<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件处理</title>
</head>

<body>
    <!--准备好一个容器-->
    <div id="test"></div>
    <!--引入核心库-->
    <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <!--引入react-dom支持react操纵dom-->
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <!--引入babel用于将jsx转为js-->
    <script src="../js/babel.min.js"></script>
    <!--引入prop-types,用于对标签属性进行限制-->
    <script src="../js/prop-types.js">//引入之后全局会产生一个PropType对象</script>

    <script type="text/babel">
        /*
        通过onXxx属性指定事件
        react使用的是自定义事件 不是原生DOM事件
        react通过事件委托处理 都加到了最外层的元素上(冒泡) 为了效率更高
        不要过度使用refs
        取节点的值使用的是event.target.value
        */
        //创建一个组件
        class Demo extends React.Component {
            //创建ref容器
            myRef = React.createRef()//React.createRef调用后可以返回一个容器,该容器可以储存被ref所标识的节点
            //展示左侧数据
            showData = () => {
                //const { xy1 } = this//通过回调将函数捆绑在了实例对象上 所以通过this来取
                //alert(xy1.value)
                console.log(this.myRef.current.value)//这里输出的是节点上的value
            }


            /*showData2 = () => {
                const { xy2 } = this
                alert(xy2.value)
            }*/
            render() {//类组件中必须加render
                //语法限制标签必须闭合
                return (
                    <div>
                        <input ref={this.myRef} type="text" placeholder="点击按钮提示数据" />
                        <button onClick={this.showData}>点我提示左侧的数据</button>
                    </div>
                )//标签内属性的写法很重要
            }
        }
        //渲染组件到页面
        //注意DOM大写
        ReactDOM.render(<Demo />, document.getElementById('test'))
    </script>
</body>

</html>